iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 26
0
Modern Web

30天前端網頁技術超入門介紹系列 第 26

Day26. ES6(四) - 解構賦值

  • 分享至 

  • xImage
  •  

因為 JSON 的關係,陣列及物件是現今在數組表示法裡最流行的方法。解構賦值是 ES6 新增的特性,能讓數組在處理上更為方便。

解構賦值方便在哪裡?

傳統上,我們需要一個一個將屬型從物件中取出,並賦予到變數中

let JK = {
    name: 'JKchan',
    age: 16
}
let name = JK.name;
let age = JK.age;

而當屬性多達好幾十個甚至百個的時候就必須一個一個慢慢用,所以 ES6 就藉由這個方法來改善此情況。

解構指的是左邊的被賦予值的變數;賦值指的是右邊的數組;而解構賦值合起來就是將右側的資料直接賦予在左側的變數上

let JK = {
    name: 'JKchan',
    age: 16
}
let { name, age } = JK;
console.log(name, age); // JKchan 16

nameage 直接取出 JK.nameJK.age 得值賦予在他們自己身上

賦值中解構

這個也挺有趣的,當你可能在宣告後又想改變值可以用。開發上我還沒用過就是了...

let JK = {
    name: 'JKchan',
    age: 16
}
let name = "JKsama";
let age = 18;
({ name, age } = JK);
console.log(name, age); // JKchan 16

上面的 nameage 已經被宣告了,但是我突然想改掉他的值,賦予他物件內的值。
使用()來將解構賦值的語句包裝在裡面。

預設值

以下面這個範例來說,當屬性沒有這麼多的時候會以 undefined 來賦予

let JK = {
    name: 'JKchan',
    age: 16
}
let { name, age, address } = JK;
console.log(name, age, address); // JKchan 16 undefined

在 ES6 中可以用等號賦予預設值,避免出現 undefined 造成錯誤。

let { name, age, address = 'Tokyo'} = JK;
console.log(name, age, address); // JKchan 16 Tokyo

陣列型式

基本上跟物件的一樣

let JK = ['JKchan', 16];
let [name, age] = JK;
console.log(name, age); // JKchan 16

不過陣列的可以跳過不需要得值,使用逗號區隔就行了

let JK = ['JKchan', 16];
let [,age] = JK;
console.log(age); // 16

在陣列型式中想要修改已經被賦予得值的話可以不須使用()括號。

let JK = ['JKchan', 16];
let name = JKsama;
let age = 18;
[name, age] = JK;
console.log(name, age); // JKchan 16

最後,預設值的話用法跟物件型式的寫法相同。

let JK = ['JKchan'];
let [name, age = 16] = JK;
console.log(name, age); // JKchan 16

解構賦值其實還有更複雜的東西,例如帶參數的寫法,對解構賦值有更深入興趣得可以了解看看,畢竟我也不是很理解那個...


上一篇
Day25. ES6(三) - 縮寫
下一篇
Day27. ES6(五) - Arrow Function(箭頭函式) 簡單須知
系列文
30天前端網頁技術超入門介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言